home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / audio / n2a
Encoding:
Text File  |  1990-03-04  |  20.9 KB  |  462 lines

  1. Path: xanth!cs.odu.edu!Amiga-Request
  2. From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v90i093: n2a - convert NeXT sounds files to IFF 8SVX, Part01/01
  5. Message-ID: <11618@xanth.cs.odu.edu>
  6. Date: 4 Mar 90 01:11:21 GMT
  7. Sender: tadguy@cs.odu.edu
  8. Reply-To: kyrimis@Princeton.EDU (Kriton Kyrimis)
  9. Lines: 448
  10. Approved: tadguy@cs.odu.edu (Tad Guy)
  11. X-Mail-Submissions-To: Amiga@cs.odu.edu
  12. X-Post-Discussions-To: comp.sys.amiga
  13.  
  14. Submitted-by: kyrimis@Princeton.EDU (Kriton Kyrimis)
  15. Posting-number: Volume 90, Issue 093
  16. Archive-name: audio/n2a
  17.  
  18. [ uuencoded executable enclosed.  ...tad ]
  19.  
  20. Here's a little hack I wrote to enable me to play NeXT sounds on my amiga.
  21.  
  22. #!/bin/sh
  23. # This is a shell archive.  Remove anything before this line, then unpack
  24. # it by saving it into a file and typing "sh file".  To overwrite existing
  25. # files, type "sh file -c".  You can also feed this as standard input via
  26. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  27. # will see the following message at the end:
  28. #        "End of archive 1 (of 1)."
  29. # Contents:  Makefile README n2a.c n2a.uu
  30. # Wrapped by tadguy@xanth on Sat Mar  3 20:10:59 1990
  31. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  32. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  33.   echo shar: Will not clobber existing file \"'Makefile'\"
  34. else
  35. echo shar: Extracting \"'Makefile'\" \(91 characters\)
  36. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  37. Xn2a: n2a.o
  38. X    blink FROM LIB:c.o n2a.o TO n2a NODEBUG LIB LIB:lc.lib
  39. X
  40. Xn2a.o: n2a.c
  41. X    lc n2a.c
  42. END_OF_FILE
  43. if test 91 -ne `wc -c <'Makefile'`; then
  44.     echo shar: \"'Makefile'\" unpacked with wrong size!
  45. fi
  46. # end of 'Makefile'
  47. fi
  48. if test -f 'README' -a "${1}" != "-c" ; then 
  49.   echo shar: Will not clobber existing file \"'README'\"
  50. else
  51. echo shar: Extracting \"'README'\" \(1006 characters\)
  52. sed "s/^X//" >'README' <<'END_OF_FILE'
  53. Xn2a converts NeXT sound files into 8SVX IFF  files.   NeXT  sound
  54. Xfiles  come  in  many  different  flavors;  n2a  groks  only  the
  55. XLINEAR_16 format, which is the one that most PD sound files  seem
  56. Xto be using.  NeXT recording applications use the MULAW_8 format.
  57. XYou can convert from this format to LINEAR_16 with the sndconvert
  58. Xapplication  on  the NeXT.  You can tell whether a sound file can
  59. Xbe processed by n2a using the command:
  60. X  od -b file | head -1
  61. XIf the last number is 003, then the file is in LINEAR_16 format.
  62. X
  63. XThe program compiles both on the NeXT and the Amiga.  I have pro-
  64. Xvided an Amiga executable, but I would recommend running the pro-
  65. Xgram on the NeXT, because the resulting 8SVX  file  is  half  the
  66. Xsize of the NeXT file.
  67. X
  68. XThis program is released to the public domain.
  69. X
  70. X    Kriton    (UUCP: rutgers!princeton!kyrimis)
  71. X              (ARPA: kyrimis@princeton.edu)
  72. X-----
  73. X"Everybody keep calm.  It's all under control, there's nothing to
  74. X see.  It is merely a major scientific breakthrough."
  75. X-----
  76. END_OF_FILE
  77. if test 1006 -ne `wc -c <'README'`; then
  78.     echo shar: \"'README'\" unpacked with wrong size!
  79. fi
  80. # end of 'README'
  81. fi
  82. if test -f 'n2a.c' -a "${1}" != "-c" ; then 
  83.   echo shar: Will not clobber existing file \"'n2a.c'\"
  84. else
  85. echo shar: Extracting \"'n2a.c'\" \(3080 characters\)
  86. sed "s/^X//" >'n2a.c' <<'END_OF_FILE'
  87. X#include <stdio.h>
  88. X#include <math.h>
  89. X#ifdef AMIGA
  90. X#include <exec/types.h>
  91. X#else
  92. Xtypedef long LONG;
  93. Xtypedef unsigned long  ULONG;
  94. Xtypedef unsigned char  UBYTE;
  95. Xtypedef unsigned short UWORD;
  96. X#endif
  97. X
  98. X#define MAGIC        0x2e736e64
  99. X#define LINEAR_16    3
  100. X
  101. X#define Unity 0x10000L
  102. X
  103. Xtypedef LONG Fixed;
  104. Xtypedef struct {
  105. X  ULONG oneShotHiSamples,
  106. X    repeatHiSamples,
  107. X    samplesPerHiCycle;
  108. X  UWORD samplesPerSec;
  109. X  UBYTE ctOctave,
  110. X    sCompression;
  111. X  Fixed volume;
  112. X} Voice8Header;
  113. X
  114. Xmain(int argc, char *argv[])
  115. X{
  116. X  Voice8Header v;
  117. X  long i, nsamples, voffset, lengthoffset, nsamplesoffset;
  118. X  int magic, offset, size, format, rate, nchannels;
  119. X  unsigned short s16;
  120. X  FILE *in, *out;
  121. X  unsigned char s8;
  122. X
  123. X  if (argc != 3) {
  124. X    fprintf(stderr, "Usage: %s sndfile 8svxfile\n", argv[0]);
  125. X    exit(1);
  126. X  }
  127. X  in = fopen(argv[1], "r");
  128. X  if (!in) {
  129. X    fprintf(stderr, "Can't open %s!\n", argv[1]);
  130. X    exit(1);
  131. X  }
  132. X  fread((void *)&magic,     sizeof(magic),     1, in);
  133. X  fread((void *)&offset,    sizeof(offset),    1, in);
  134. X  fread((void *)&size,      sizeof(size),      1, in);
  135. X  fread((void *)&format,    sizeof(format),    1, in);
  136. X  fread((void *)&rate,      sizeof(rate),      1, in);
  137. X  fread((void *)&nchannels, sizeof(nchannels), 1, in);
  138. X
  139. X  if (magic != MAGIC) {
  140. X    fprintf(stderr, "%s Is not a NeXT sound file!\n", argv[1]);
  141. X    fclose(in);
  142. X    exit(1);
  143. X  }
  144. X  if (format != LINEAR_16 || nchannels != 1) {
  145. X    fprintf(stderr, "I can only handle linear 16 format with 1 channel!\n");
  146. X    if (format != LINEAR_16 && nchannels == 1) {
  147. X      fprintf(stderr, "Use sndconvert on the NeXT to convert to this format\n");
  148. X    }
  149. X    fclose(in);
  150. X    exit(1);
  151. X  }
  152. X  out = fopen(argv[2], "w");
  153. X  if (!out) {
  154. X    fprintf(stderr, "Can't open %s!\n", argv[2]);
  155. X    fclose(in);
  156. X    exit(1);
  157. X  }
  158. X  fwrite((void *)"FORM", sizeof(char), 4, out);
  159. X  lengthoffset = ftell(out);
  160. X  i = 0;    /* update this later */
  161. X  fwrite((void *)&i, sizeof(i), 1, out);
  162. X  fwrite((void *)"8SVX", sizeof(char), 4, out);
  163. X  fwrite((void *)"VHDR", sizeof(char), 4, out);
  164. X  i = 20;
  165. X  fwrite((void *)&i, sizeof(i), 1, out);
  166. X  voffset = ftell(out);
  167. X  v.oneShotHiSamples = 0;    /* Update this later */
  168. X  v.repeatHiSamples = 0;
  169. X  v.samplesPerHiCycle = 0;
  170. X  v.samplesPerSec = rate;
  171. X  v.ctOctave = 1;
  172. X  v.sCompression = 0;
  173. X  v.volume = Unity;
  174. X  fwrite((void *)&v, sizeof(v), 1, out);
  175. X  fwrite((void *)"BODY", sizeof(char), 4, out);
  176. X  nsamplesoffset = ftell(out);
  177. X  i = 0;    /* update this later */
  178. X  fwrite((void *)&i, sizeof(i), 1, out);
  179. X
  180. X  fseek(in, (long)offset, 0);
  181. X  nsamples = 0;
  182. X  while (fread((void *)&s16, sizeof(s16), 1, in)) {
  183. X    s8 = s16 >> 8;
  184. X    fwrite((void *)&s8, sizeof(s8), 1, out);
  185. X    nsamples++;
  186. X  }
  187. X  fclose(in);
  188. X  if (nsamples % 2) {
  189. X    s8 = 0;
  190. X    fwrite((void *)&s8, sizeof(s8), 1, out);    /* pad to even length */
  191. X  }
  192. X  fseek(out, voffset, 0);
  193. X  v.oneShotHiSamples = nsamples;
  194. X  fwrite((void *)&v, sizeof(v), 1, out);
  195. X  fseek(out, lengthoffset, 0);
  196. X  i = 40 + nsamples;
  197. X  fwrite((void *)&i, sizeof(i), 1, out);
  198. X  fseek(out, nsamplesoffset, 0);
  199. X  fwrite((void *)&nsamples, sizeof(nsamples), 1, out);
  200. X  fclose(out);
  201. X  exit(0);
  202. X}
  203. END_OF_FILE
  204. if test 3080 -ne `wc -c <'n2a.c'`; then
  205.     echo shar: \"'n2a.c'\" unpacked with wrong size!
  206. fi
  207. # end of 'n2a.c'
  208. fi
  209. if test -f 'n2a.uu' -a "${1}" != "-c" ; then 
  210.   echo shar: Will not clobber existing file \"'n2a.uu'\"
  211. else
  212. echo shar: Extracting \"'n2a.uu'\" \(13686 characters\)
  213. sed "s/^X//" >'n2a.uu' <<'END_OF_FILE'
  214. Xbegin 644 n2a
  215. XM```#\P`````````#``````````(```>6````^0```5L```/I```'EDCG?OXD%
  216. XM2"0`2?D`````+'@`!$?Y```#`'(`(#P```";8`(FP5'(__PI3P-`*4X#.$*LZ
  217. XM`SQP`"(\```P`$ZN_LY#^@%:<`!.KOW8*4`$F&8&<&1@``#\)FX!%"EK`)@#7
  218. XM-$JK`*QG:"`/D*\`!`:`````@"E``P0@:P"LT<C1R")H`!#3R=/)(`)R`!(9&
  219. XM*4D#2-"!4H!"9U*``D#__I_`58!"=P@`(`)3@-2!'[(``"``4X)1R/_V'[P`(
  220. XM("``4X(?L2``(`!1RO_X(D\O"6!R*6L`.@,$<']2@-&L`P1!ZP!<3J[^@$'KZ
  221. XM`%Q.KOZ,*4`#/"\`)$`@*@`D9Q(L;`28($`B*```*4$#-$ZN_X(B*@`@9QHD1
  222. XM/````^U.KO_B*4`#1&<*Y8@@0"=H``@`I"!L`SPO"$AL`P`@:``D*6@`!`-(W
  223. XM3KH`9DZZ%99P`&`$("\`!"\`("P#+&<$($!.D$ZZ$&XL>``$(FP$F$ZN_F).=
  224. XMN@`\2JP#/&<:(BP#1&<$3J[_W"QX``1.KO]\(FP#/$ZN_H8@'RYL`T!,WW]^S
  225. XM3G5D;W,N;&EB<F%R>0!.=4YU3E7_[$CG+Q`N+P`T)F\`."@'<#'`JP`89P9P\
  226. XM_V```G`(*P`'`!I6P$0`2(!(P"P`2JL`%&8``(0(*P`"`!MF>G``)T``#'+_R
  227. XMOH%G``)"+PM.NA<.6$]*@&<,".L`!0`;</]@``(J".L``0`;2@9G#B`K`!0B8
  228. XM`$2!)T$`#&`(("L`%"=```Q3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`2<
  229. XM(`=R`!(`+PLO`6$`_U)03R(`(`%@``'6""L``@`;9UAP_[Z`9@9P`&```<(@[
  230. XM!QM`__]*!F<B<@J^@68<<@(O`4AZ`;(O*P`<*T'_\$ZZ#]!/[P`,*@!@&G(!H
  231. XM+P%(;?__+RL`'"M!__!.N@^T3^\`#"H`?O]@``#@".L``0`;2@9G4G#_OH!G<
  232. XM3%2K``QR"KZ!9B8@:P`$0^@``2=)``00O``-(BL`#$J!:PHO"R\`80#^KE!/4
  233. XM4JL`#"!K``1#Z``!)TD`!"`'$(`B*P`,2H%K``$<?O\@*P`$D*L`$"M`__!GS
  234. XM<@@K``8`&F=22'@``D*G+RL`'$ZZ!=!/[P`,*T#_[$H&9SA3K?_L;3)"IR\M:
  235. XM_^PO*P`<3KH%L$AX``%(;?_]+RL`'$ZZ%SA/[P`82JP#&&8*$"W__7(:L`%G1
  236. XMR"\M__`O*P`0+RL`'$ZZ#M1/[P`,*@!@`GH`</^Z@&8(".L`!0`;8`RZK?_P9
  237. XM9P8(ZP`$`!M*!F<.(BL`%"0!1((G0@`,8!@(*P`"`!MG"'(`)T$`#&`((BL`7
  238. XM%"=!``P@:P`0)T@`!+Z`9RY3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`22
  239. XM(`=R`!(`+PLO`6$`_9!03R(`<##`JP`89P1P_V`,</^X@&8$<`!@`B`$3-\(G
  240. XM]$Y=3G4-"@````````````!P84CG!Q`F;P`4""L`!P`:5L!$`$B`2,`N`'`P%
  241. XMP*L`&&<*0JL`"'#_8``!6`@K``<`&V<4""L`!@`;9PPO"TAX__].NOT:4$]*H
  242. XMJP`49C9"JP`(""L``@`;9Q)P`2=``!1!ZP`@)T@`$&```(0O"TZZ%$Y83TJ`)
  243. XM9W8(ZP`%`!MP_V```0!*!V=F5*L`""`K``A*@&Y:(&L`!$/H``$G20`$?``<1
  244. XM$"`&#(`````:9RX,@`````UF,E.K``AM%"!K``1#Z``!)TD`!'``$!!@``"T\
  245. XM+PMA`/\N6$]@``"H".L`!``;</]@``"<(`9@``"6""L``0`;9DX(ZP```!LO0
  246. XM*P`4+RL`$"\K`!Q.NA543^\`#"H`2H5J!@CK``4`&TJ%9@8(ZP`$`!M*A6\:[
  247. XM2@=G"B`%1(`G0``(8`0G10`((&L`$"=(``1P,L"K`!AG%DH'9PAP_R=```A@@
  248. XM!G``)T``"'#_8"!3JP`(;1(@:P`$0^@``2=)``1P`!`08`@O"V$`_H183TS?O
  249. XM".!.=0``+FP#0$ZZ%?I(>0```!1.N@@0``````````!P84CG(#`F;P`0)$M*"
  250. XM$F<D<``0$D'L`6T(,``!"`!G"G(`$@!T()*"8`1R`!(`%(%2BF#8(`M,WPP$?
  251. XM3G4``````````'!A3E7_^$CG`S`F;P`@)&\`)"XO`"@@2DH89OQ3B)'*+`@@Y
  252. XM2TH89OQ3B)'+(`@B2]/`*TG_^+R'8P(L!R`&($I@`A+84X!D^B!M__A",&@`?
  253. XM(`M,WPS`3EU.=2`O``@@;P`$3E7_]")/<@I.N@I8!D$`,!+!2H!F\"`)$.&_J
  254. XMR6;Z0A"0CTY=3G4``"`O``@@;P`$3E7_]")/(@`"00`'!D$`,!+!YHAF\"`)<
  255. XM$.&_R6;Z0A"0CTY=3G4``#`Q,C,T-38W.#EA8F-D968@+P`((&\`!$/O``0RL
  256. XM``)!``\2^Q#<Z(AF\B`)(@]8@1#ALHEF^D(0D(%.=2!O``0B2'(`<``O`@P0D
  257. XM`"MG!@P0`"UF`E)($!@$```P;1(,```);@PD`>6!TH+2@=*`8.8,$0`M9@)$-
  258. XM@20?(`A3@"!O``@@@9")3G5.5?_F2.</,"9O`#HN+P`^0BW__T*L`Q@K;`248
  259. XM__)Z`[JL`.!L$B`%YX!![`-,2K`(`&<$4H5@Z"`L`."PA68,<!@I0`24</]@Q
  260. XM``$J(`7G@$'L`TS1P"1(2JT`$&<(""T``@`39PHK?````^S_[F`(*WP```/ND
  261. XM_^X@/```@`#`K`#XL8<(!P`#9PP@!P)`__PN``!'``(@!W(#P($,@`````)G7
  262. XM#`R``````6<$2H!F!BP'4H9@#'`6*4`$E'#_8```M"`'`H````,`9P``B`@'E
  263. XM``IG%AM\``'__R\M_^XO"TZZ!V)03R@`8#P(!P`)9A9(>`/M+PM.N@<$4$\H,
  264. XM`$J$:@0(QP`)"`<`"6<:&WP``?__*6W_\@24+RW_[B\+3KH'B%!/*`!*+?__X
  265. XM9S8@!W)XTH'`@4J`9RI*A&LF+P1.N@?02'@#[2\+3KH&LD_O``PH`&`.2'@#;
  266. XM[2\+3KH&H%!/*`!*K`,89P1P_V`()(8E1``$(`5,WPSP3EU.=0```````````
  267. XM`````````````````````````````'!A2.</$"XO`!@L+P`<*B\`("\'3KH(*
  268. XM9%A/)D`@"V8$</]@'B\%+P8O*P`$3KH%;$_O``PH`$JL`QAG!'#_8`(@!$S?!
  269. XM"/!.=0``2.<#,"XO`!1*AVX&<`!@``"D<`B^@&0"+@`@!U:`+@`"1__\1>P`Q
  270. XM\"92(`MG0"`K``2PAVTRL(=F#"!3)(B?K`#T(`M@;B`K``20AW((L(%E%B!+6
  271. XMT<<DB"1()),E0``$GZP`]"`+8$PD2R938+P@!R(L`6C0@5.`3KH&\B(L`6A.Q
  272. XMN@;*+`!0AB`&5H`L``)&__PO!DZZ"`I83R9`(`MG$B\&+PM.N@^Z+H=A`/]4@
  273. XM4$]@`G``3-\,P$YU``````````````````!.5?_T2.</,"9O`"PN+P`T)&\`4
  274. XM.'P`O(=L2BHM``Q*A6\^>``8&U.J``QM%B!J``1#Z``!)4D`!"`$$(!R`!(`G
  275. XM8!(@!'(`$@`O"B\!3KKW.E!/(@!2@68$(`9@"E.%8+Y2AF"R(`9,WPSP3EU.P
  276. XM=0``2.<!$"9O``P(*P`!`!MG%DJK`!1F!'``8%PO"TAX__].NO;V4$](>``!-
  277. XM0J<O*P`<3KK^3D_O``PN`'#_OH!G!DJK`!1F!"`'8"P(*P`!`!MG#"`K``20,
  278. XMJP`0T(=@&`@K``<`&F<*(`<B*P`(T(%@!B`'D*L`"$S?"(!.=4CG`Q`F;P`0)
  279. XM+B\`%"PO`!@(*P`!`!MG#B\+2'C__TZZ]GQ03V`:<`&\@&84""L`!P`:9P@@]
  280. XM*P`(WH!@!)ZK``@G:P`0``1P`"=```PG0``(""L`!P`;9P9P_,&K`!@O!B\';
  281. XM+RL`'$ZZ_9Q/[P`,4H!F!'#_8`APS\&K`!AP`$S?",!.=4Y5__1(YP\P)F\`V
  282. XM+"XO`#0D;P`X2JT`#&8$<`!@2'P`O(=L0"HM``Q*A6\T4ZH`"&T2(&H`!$/H*
  283. XM``$E20`$<``0$&`(+PI.NOAT6$\H`'#_N(!F!"`&8`X@!!;`4X5@R%*&8+P@:
  284. XM!DS?#/!.74YU``!(YP$@+B\`#%*L!)`@;`2,4Z@`#&T6(F@`!$7I``$A2@`$X
  285. XM(`<2@'(`$@!@$B`'<@`2`"\(+P%.NO5P4$\B`$S?!(!.=4Y5``!(YP`P)F\`X
  286. XM$"1O`!1"K`20*4L$C$AM`!`O"DAZ_YQ.N@H6+HM(>/__3KKU-B`L!)!,[0P`/
  287. XM__A.74YU``!.5?_P2.</,"9O`#0D;P`X2JH`&&<(+PI.N@[66$\J+`%D?@%PJ
  288. XM`!`S>``,0`!B9PH,0`!A9@QZ`&`&*CP``(``4H=R*[(S>`!7P$0`2(!(P"@`E
  289. XM<``0$PQ``'=G``"(#$``<F="#$``868``+Y(>``,+SP``($"+RT`"$ZZ^G1/@
  290. XM[P`,+`!P_[R`9@9P`&```-!*A&<&<$#0@&`"<`(N``!'0`!@``"(2H1G!'`"U
  291. XM8`)P``!`@`!(>``,+P`O+0`(3KKZ,$_O``PL`'#_O(!F!G``8```C$J$9P9PW
  292. XM0-"`8`)P`2X`8$A*A&<$<`)@`G`!`$"```!``0``0`(`2'@`#"\`+RT`"$ZZA
  293. XM^>I/[P`,+`!P_[R`9@1P`&!&2H1G!G!`T(!@`G`"+@!@!'``8#*1R"5(`!!PM
  294. XM`"5``!0E1@`<)6H`$``$)4``#"5```A*A68&(#P``(``(@>"@"5!`!@@"DS?6
  295. XM#/!.74YU``````````!P84CG`Q`N+P`01^P`_"`+9S0(*P`"`!MF*`@K``$`Q
  296. XM&V<@("L`!)"K`!`L`$J&9Q(O!B\K`!`O*P`<3KH$.D_O``PF4V#(+P=.N@LHH
  297. XM6$],WPC`3G4``````````'!A2.<W$"XO`!PF;P`@+"\`)$JL`S!G!$ZZ#Z1"B
  298. XMK`,8(@<D"R8&+&P$F$ZN_]`J`'#_NH!F#DZN_WPI0`,8<`4I0`24(`5,WPCL&
  299. XM3G4``````````````````$CG/P`N+P`<+"\`("HO`"1*K`,P9P1.N@],0JP#*
  300. XM&"`%4X`B!R0&)@`L;`283J[_OB@`</^X@&8.3J[_?"E``QAP%BE`!)0@!0R`L
  301. XM`````F<6#(`````!9PA*@&88(`9@%"`$T(9@#B('=`!V`"QL!)A.KO^^3-\`P
  302. XM_$YU``!(YS<0+B\`'"9O`"`L+P`D2JP#,&<$3KH.T$*L`Q@B!R0+)@8L;`28=
  303. XM3J[_UBH`</^Z@&8.3J[_?"E``QAP!2E`!)0@!4S?".Q.=0``2.<C$"9O`!0N)
  304. XM+P`82JP#,&<$3KH.B$*L`Q@B"R0'+&P$F$ZN_^(L`$J&9A).KO]\*4`#&'`",
  305. XM*4`$E'#_8`(@!DS?",1.=0``3E7__$CG(1`F;P`82JP#,&<$3KH.0$*L`Q@BR
  306. XM"W3^+&P$F$ZN_ZPN`$J'9PHB!TZN_Z9P_V`F(@LD/````^Y.KO_B+@!*AV829
  307. XM3J[_?"E``QAP`BE`!)1P_V`"(`=,WPB$3EU.=4Y5__Q(YR$0)F\`&$JL`S!G&
  308. XM!$ZZ#=Q"K`,8(@MT_BQL!)A.KO^L+@!*AV<,(@=.KO^F(@M.KO^X(@LD/```A
  309. XM`^Y.KO_B+@!*AV823J[_?"E``QAP`BE`!)1P_V`"(`=,WPB$3EU.=0``+P<NT
  310. XM+P`(2JP#,&<$3KH->B('+&P$F$ZN_]QP`"X?3G5(YS``)``F`4A"2$/$P<;`8
  311. XMP,'40TA"0D+0@DS?``Q.=4J`:@``'D2`2H%J```,1(%A```@1(%.=6$``!A$4
  312. XM@$2!3G5*@6H```Q$@6$```9$@$YU+P)(030!9@``(DA`2$%(0C0`9P``!H3!T
  313. XM,`)(0#0`A,$P`DA",@(D'TYU+P-V$`Q!`(!D```&X9E10PQ!"`!D```&Z9E9`
  314. XM0PQ!(`!D```&Y9E50TI!:P``!N.94T,T`.:H2$)"0N:J2$.`P38`,`(T`TA!2
  315. XMQ,&0@F0```A30]"!9/YR`#(#2$/GN$A`P4$F'R0?3G4O!RXO``AP`"E``QA*+
  316. XMAVLBOJP`X&P<(`?G@$'L`TQ*L`@`9PX@!^>`0>P#3-'`(`A@"'`)*4`$E'``\
  317. XM+A].=0``2.<`,B9L!)P@"V<4)%,B2R`K``@L>``$3J[_+B9*8.B1R"E(!*`I@
  318. XM2`2<3-],`$YU2.<!,BXO`!1P#-Z`(`=R`"QX``1.KO\Z)D`@"V8$<`!@.B='X
  319. XM``A%[`2<(&H`!"=(``21R":(2I)F`B2+2JH`!&<&(FH`!"*+)4L`!$JL`.1FJ
  320. XM!"E+`.1!ZP`,(`A,WTR`3G4``````````````````$CG!S`N+P`8)F\`'"PO=
  321. XM`"`O!TZZ_PQ83R1`(`IF!'#_8#8(*@`#``-G$$AX``)"IR\'3KKV=$_O``PO(
  322. XM!B\++RH`!$ZZ^Z1/[P`,*@!*K`,89P1P_V`"(`5,WPS@3G4``$Y5_\1(YR<PP
  323. XM)F\`7"1O`&!^`'P`>@!P`!M\`"#_^W(`*T'_]G3_*T+_\D'M_]`;0/_Q&T#__
  324. XM_"M!_^0K0?_H*TC_S$H39RQP`!`3!$``(&<45T!G%%%`9PA50&86?@%@#GP!+
  325. XM8`IZ`6`&&WP``?_\4HM@T!`3<C"P`68&4HL;0?_[<"JP$V8,(%)8DBM0__92M
  326. XMBV`.2&W_]B\+3KKSQE!/U\`0$W(NL`%F(E*+<"JP$V8,(%)8DBM0__)2BV`./
  327. XM2&W_\B\+3KKSG%!/U\`0$W)LL`%F"AM\``'_\5*+8`AR:+`!9@)2BQ`;<@`2;
  328. XM`!M`__`$00!89P`!?@1!``MG``(*4T%G)`1!``MG``$24T%G``%05T%G``&Z_
  329. XM54%G``#D5T%G``%28``!^$HM__%G""!26)(@$&`&(%)8DB`0*T#_[&P*<@%$C
  330. XMK?_L*T'_Z$JM_^AG!'`M8`I*!F<$<"M@`G`@&T#_T'``$`8B+?_H@H!P`!`%P
  331. XM@H!G"%*M_\Q2K?_D+RW_["\M_\Q.NO(^4$\K0/_(("W_\DJ`:@9R`2M!__(@\
  332. XM+?_((BW_\I*`2.T``O_$;S0@;?_,(DC3P2\`+PDO"$ZZ!FI/[P`,<``0+?_[`
  333. XM(BW_Q"!M_\Q@`A#`4X%D^B`M__(K0/_(T:W_Y$'M_]`K2/_,2@=G``$P&WP`:
  334. XM(/_[8``!)DHM__%G""!26)(@$&`&(%)8DB`0*T#_[&``_V1*+?_Q9P@@4EB2`
  335. XM(!!@!B!26)(@$"M`_^Q*+?_\9Q(@;?_,$/P`,'(!*T'_Y"M(_\PO`"\M_\Q.;
  336. XMNO&B4$\K0/_(8`#_,AM\`##_^R`M__)*@&H&<`@K0/_R2BW_\6<((%)8DB`0>
  337. XM8`8@4EB2(!`K0/_L2BW__&<6(&W_S!#\`#`0_`!X<@(K0?_D*TC_S"\`+RW_:
  338. XMS$ZZ\8903RM`_\AP6+`M__!F`/[02&W_T$ZZ\&)83V``_L(@4EB2(E`K2?_,6
  339. XM9@A!^@#8*TC_S"!M_\Q*&&;\4XB1[?_,*TC_Y"`M__)*@&LFL<!O(BM`_^1@>
  340. XM''`!*T#_Y"!26)(@$!M`_]!"+?_18`9P`&```(P@+?_D(BW_]K*`;`AT`"M"-
  341. XM__9@!)&M__9*!V<V4ZW_Y&T8<``@;?_,$!@O`"M(_\P@;0`03I!83V#B4ZW_B
  342. XM]FU(<``0+?_[+P`@;0`03I!83V#H4ZW_]FT2<``0+?_[+P`@;0`03I!83V#H?
  343. XM4ZW_Y&T8<``@;?_,$!@O`"M(_\P@;0`03I!83V#B(`M,WPSD3EU.=0``3E7__
  344. XM]$CG`3`F;P`@)&\`)"MM`!#_]AX:2@=G-'`EO@!F(K`29@12BF`:+PM(;?_V"
  345. XM+PIA`/P63^\`#"M`__IG!"1`8-)P`!`'+P!.DUA/8,9,WPR`3EU.=0``3E7_&
  346. XM\$CG(3(F;P`L#*P````@!.)L``"&$!-R(+`!9PQR";`!9P9R"K`!9@12BV#H1
  347. XM2A-G:"`L!.+E@%*L!.)![`3JT<`D2'`BL!-F)E*+)(M*$V<*<"*P$V<$4HM@W
  348. XM\DH39@Q(>``!3KH")%A/8)Y"&V":)(M*$V<8$!-R(+`!9Q!R";`!9PIR"K`!>
  349. XM9P12BV#D2A-F`F`&0AM@`/]R2JP$XF8&(&P#/&`$0>P$ZBE(!.9*K`3B9GQ#3
  350. XM^@$D3>P$J"S9+-DLV2S9/)$B;`,\(&D`)$AX`"@O*``$2&P$J$ZZ[GY/[P`,`
  351. XM+&P$F$'L!*@B""0\```#[DZN_^(I0`-0*4`#6'(0*4$#5"E``V`I00-<Y8`K-
  352. XM0/_P+'@`!)/)3J[^VB!M__`B0"-H``@`I'X`*T#_]&`J+&P$F$ZN_\HI0`-0W
  353. XM3J[_Q"E``UA!^@"F(@@D/````^U.KO_B*4`#8'X0(`<`0(`!@:P#3"`'`$"`@
  354. XM`H&L`U0`K```@`,#7$JL`61G!'``8`8@/```@``N`$*L`1@@!P!```$I0`$4G
  355. XM<`$I0`$Z(`<`0``"*4`!-G`"*4`!7"`'`$``@"E``5A!^@/Z*4@#,"\L!.8O/
  356. XM+`3B3KH`)D*73KKU3$SM3(3_W$Y=3G5C;VXZ,3`O,3`O,S(P+S@P+P`J`$[Y:
  357. XM`````````````$CG,#(L;P`X(&\`&")O`!PD;P`@)F\`)"`O`"@B+P`L)"\`K
  358. XM,"8O`#1.KOZD3-],#$YU```O"R9O``A*JP`49PP(*P`#`!MF!'``8#8O+`)P^
  359. XM3KKP,EA/)T``!"=``!!*@&8*<`PI0`24</]@%B=L`G``%'#SP:L`&'``)T``F
  360. XM#"=```@F7TYU``````````!P84CG!P`N+P`0("P`X%.`+`!*1FLP(`9(P.>`B
  361. XM0>P#3"HP"`!*!6<:"`4`!&84(`9(P.>`0>P#3"\P"`1.NO;D6$]31F#,+P=.'
  362. XMNN><6$],WP#@3G4``$Y5_^A(YP$R+B\`-$J';@9P_V```-)P"+Z`9`(N`"`'&
  363. XM5H`N``)'__PD;0`(("T`"-"'WZP`]$'L`/`F4"M`__`K2/_T(`MG``"0($L@,
  364. XM*P`$T<`K2/_L(FW_\+?)8Q`DBR5'``0L;?_T+(IP`&!XM\EF&BQ3)(X@*P`$X
  365. XM(@#2AR5!``0L;?_T+(IP`&!:M<AD")^L`/1P_V!.M<AF+$J39PX@4[/(8PB?O
  366. XMK`#T</]@.-^K``1*DV<.L]-F"B`I``31JP`$)I%P`&`>*TO_]"MM_^S_Z"93[
  367. XM8`#_;B!M__0@BD*2)4<`!'``3-],@$Y=3G4``$CG!S`N+P`8)F\`'"PO`"`O&
  368. XM!TZZ]LQ83R1`(`IF!'#_8!XO!B\++RH`!$ZZ]%!/[P`,*@!*K`,89P1P_V`"V
  369. XM(`5,WPS@3G4``"!O``0B;P`(("\`#&\6L\AE#-'`T\`3(%.`9OI.=1+84X!FG
  370. XM^DYU``!.5?_X2.<`,$?L`/P@"V<,2JL`&&<&)$LF4V#P(`MF(DAX`").NNX::
  371. XM6$\F0$J`9@1P`&`<)(MP(7(`($L0P5'(__PO"R\M``PO+0`(3KKQ'DSM#`#_0
  372. XM\$Y=3G4``$CG`Q`F;P`0""L``0`;9Q`O"TAX__].NN8<4$\N`&`"?@!P#,"KA
  373. XM`!AF%$JK`!1G#B\K`!0O*P`03KK^"E!/0JL`&"\K`!Q.N@((6$\L`'#_OH!G+
  374. XM!DJ&9@)P`$S?",!.=4Y5_ZA(YP$"+'@`!$/Z`(YP`$ZN_=@K0/^H9@I(>``4J
  375. XM3KK];EA/?@`@;`-('BC__R`'0^W_L&`"$MA3@&3Z0C5XL$'M_[`I2`*`+RW_`
  376. XMJ$AX`"A(>`#Z<``O`"\`2&P"G'(`+P%(;`*(+P%.NOR42'@`%$ZZ_1Q,[4"``
  377. XM_Z!.74YU*BH@4W1A8VL@3W9E<F9L;W<@*BH``$58250``&EN='5I=&EO;BYL6
  378. XM:6)R87)Y````````````<&%.5?^82.<S`GX`(&P#2!XH__]P3[Z`;P(N`"`'4
  379. XM0^W_KV`"$MA3@&3Z0C5XKRQX``23R4ZN_MHK0/^F($!*J`"L9U(B*`"LY8$B6
  380. XM02PI`#A([0`"_YY*AF8$+"@`H$J&9S0L;`28(@9!^@"R)`AV"TZN_]`@1U*'\
  381. XM(`@;O``*"*\L;`28(@8F!T'M_Z\D"$ZN_]!P_V!2+'@`!$/Z`(QP`$ZN_=@K:
  382. XM0/^:9@1P_V`Z0>W_KRE(`M`O+?^:2'@`/$AX`/IP`"\`+P!(;`+L2&P"V$AL(
  383. XM`L1"ITZZ^W)/[P`D4X!G!'#_8`)P`$S?0,Q.74YU*BH@57-E<B!!8F]R="!2'
  384. XM97%U97-T960@*BH``$-/3E1)3E5%``!!0D]25``J*BH@0G)E86LZ(`!I;G1U.
  385. XM:71I;VXN;&EB<F%R>0!(YP$0+B\`#"\'3KKSN%A/)D`@"V8$</]@*`@K``0`H
  386. XM`V<&<``F@&`:+RL`!$ZZ\I)83W``)H!*K`,89P1P_V`"<`!,WPB`3G4O!W```
  387. XM(CP``#``+'@`!$ZN_LXN``*'```P`$J'9R!*K`,P9QH@;`,P3I!*@&8"8`Y"F
  388. XMK`,P2'@`%$ZZ^QY83RX?3G5AO$YU``````/L`````0````$``!C.`````@``$
  389. XM``(````4````"@````````/R```#Z0```/E.5?^TO^P#!&4``YY(YP<0+BT`I
  390. XM""9M``QP`[Z`9QHO$TAL``!(;`%`3KH#D$AX``%.N@.@3^\`$$AL`!PO*P`$'
  391. XM3KH#<E!/*T#_NF8<+RL`!$AL`!Y(;`%`3KH#8$AX``%.N@-P3^\`$"\M_[I(Y
  392. XM>``!2'@`!$AM_]1.N@-D+JW_NDAX``%(>``$2&W_T$ZZ`U`NK?^Z2'@``4AX!
  393. XM``1(;?_,3KH#/"ZM_[I(>``!2'@`!$AM_\A.N@,H+JW_NDAX``%(>``$2&W_@
  394. XMQ$ZZ`Q0NK?^Z2'@``4AX``1(;?_`3KH#`$_O`$P,K2YS;F3_U&<D+RL`!$ALA
  395. XM`"Y(;`%`3KH"OBZM_[I.N@+(2'@``4ZZ`L9/[P`0<`.PK?_(9@AP`;"M_\!GI
  396. XM/DAL`$Q(;`%`3KH"CE!/<`.PK?_(9Q9P`;"M_\!F#DAL`(!(;`%`3KH"<%!/!
  397. XM+RW_NDZZ`GA(>``!3KH"=E!/2&P`MB\K``A.N@)*4$\K0/^V9B0O*P`(2&P`V
  398. XMN$AL`4!.N@(X+JW_NDZZ`D)(>``!3KH"0$_O`!`O+?^V2'@`!$AX``%(;`#(Z
  399. XM3KH"'"ZM_[9.N@(F*@!"K?_H+JW_MDAX``%(>``$2&W_Z$ZZ`?HNK?^V2'@`J
  400. XM!$AX``%(;`#.3KH!YBZM_[9(>``$2'@``4AL`-1.N@'2<!0K0/_H+JW_MDAX4
  401. XM``%(>``$2&W_Z$ZZ`;@NK?^V3KH!PBP`<``K0/_L*T#_\"M`__0@+?_$.T#_Q
  402. XM^!M\``'_^D(M__LK?``!``#__"ZM_[9(>``!2'@`%$AM_^Q.N@%R3^\`3"\M[
  403. XM_[9(>``$2'@``4AL`-I.N@%:+JW_MDZZ`61"K?_H+JW_MDAX``%(>``$2&W_'
  404. XMZ"M`_]A.N@$V0I<O+?_0+RW_NDZZ`2)/[P`D0JW_Y"\M_[I(>``!2'@``DAMN
  405. XM_[Y.N@$D3^\`$$J`9RAP`#`M_[[@@!M`_[4O+?^V<`$O`"\`2&W_M4ZZ`.9/0
  406. XM[P`04JW_Y&"\+RW_NDZZ`-I83R`M_^1R`DZZ`+!*@6<:0BW_M2\M_[9P`2\`7
  407. XM+P!(;?^U3KH`KD_O`!!"IR\&+RW_MDZZ`)@K;?_D_^PNK?^V2'@``4AX`!1(^
  408. XM;?_L3KH`A$*7+P4O+?^V3KH`<G`HT*W_Y"M`_^@NK?^V2'@``4AX``1(;?_HW
  409. XM3KH`6D*7+RW_V"\M_[9.N@!&+JW_MDAX``%(>``$2&W_Y$ZZ`#@NK?^V3KH`2
  410. XM-D*73KH`-DSM".#_I$Y=3G5.^0``!=A.^0``$,A.^0``&QQ.^0``#$A.^0``B
  411. XM"Q!.^0``"B1.^0``&WA.^0``#?A.^0``"I1.^0``"Y0```/L````"@``````Z
  412. XM``.P```#P@```]H```/(```#S@```^````.V```#U````[P```.J````````0
  413. XM`_(```/J````P%5S86=E.B`E<R!S;F1F:6QE(#AS=GAF:6QE"@!R`$-A;B=T0
  414. XM(&]P96X@)7,A"@`E<R!)<R!N;W0@82!.95A4('-O=6YD(&9I;&4A"@!)(&-A[
  415. XM;B!O;FQY(&AA;F1L92!L:6YE87(@,38@9F]R;6%T('=I=&@@,2!C:&%N;F5L-
  416. XM(0H`57-E('-N9&-O;G9E<G0@;VX@=&AE($YE6%0@=&\@8V]N=F5R="!T;R!T6
  417. XM:&ES(&9O<FUA=`H`=P!#86XG="!O<&5N("5S(0H`1D]230``.%-66```5DA$?
  418. XM4@``0D]$60``````*`````````````````````````````"``````1X`````'
  419. XM``````````````````````````````````````%`````````````````````!
  420. XM`````````````````````````````````````````````````````````````
  421. XM``````````"`````!```("`@("`@("`@*"@H*"@@("`@("`@("`@("`@("`@L
  422. XM("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!@8$!`0$!:
  423. XM`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("`@("`@(">
  424. XM`@("$!`0$"`@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`06
  425. XM$!`0$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!9
  426. XM`0$!`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0=
  427. XM(````````@#__P````X`#@```````````````/__````!``$````````'%@`V
  428. XM``)T__\````$``0````````<;@````#__P````X`#@```````!U^`````/__Y
  429. XM````!``$``````````````*P__\````$``0````````=F@````#__P````0`Y
  430. XM!````````!VD`````````^P````%`````````O@```+D```"O````J@```*47
  431. X@````!`````(```+4```"F````1X```#\`````````_+DJ
  432. X``
  433. Xend
  434. Xsize 9752
  435. END_OF_FILE
  436. if test 13686 -ne `wc -c <'n2a.uu'`; then
  437.     echo shar: \"'n2a.uu'\" unpacked with wrong size!
  438. fi
  439. # end of 'n2a.uu'
  440. fi
  441. echo shar: End of archive 1 \(of 1\).
  442. cp /dev/null ark1isdone
  443. MISSING=""
  444. for I in 1 ; do
  445.     if test ! -f ark${I}isdone ; then
  446.     MISSING="${MISSING} ${I}"
  447.     fi
  448. done
  449. if test "${MISSING}" = "" ; then
  450.     echo You have the archive.
  451.     rm -f ark[1-9]isdone
  452. else
  453.     echo You still need to unpack the following archives:
  454.     echo "        " ${MISSING}
  455. fi
  456. ##  End of shell archive.
  457. exit 0
  458. -- 
  459. Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
  460. Mail comments to the moderator at <amiga-request@cs.odu.edu>.
  461. Post requests for sources, and general discussion to comp.sys.amiga.
  462.